# @Time    :2025/4/3 14:47
# 通过闭包实现装饰器，完善开根号的函数

# from math import sqrt
# def func(x):
#     # 开根号
#     return sqrt(x)
#
#
# def decorator(f):
#     def inner(n):
#         n = abs(n)
#         res = f(n)
#         return res
#
#     return inner
#
#
# func = decorator(func)
# print(func(-5))
print("------多层装饰器---装饰器语法糖--------")
# 装饰器语法糖
from math import sqrt


# 第一层装饰  ------加求绝对值功能
def get_abs(f):
    def inner(n):
        n = abs(n)
        res = f(n)
        return res

    return inner


# 第二层装饰  ------类型转换，将结果转成整数类型
def get_int(f):
    def inner(n):
        res = f(n)
        res = int(res)
        return res

    return inner


@get_int
@get_abs
def func(x):
    # 开根号
    return sqrt(x)

#func = get_abs(func)
print(func(-5))
#===========================
print("------多层装饰器---手动调用-----")
# 装饰器语法糖
from math import sqrt


# 第一层装饰  ------加求绝对值功能
def get_abs(f):
    def inner(n):
        n = abs(n)
        res = f(n)
        return res

    return inner


# 第二层装饰  ------类型转换，将结果转成整数类型
def get_int(f):
    def inner(n):
        res = f(n)
        res = int(res)
        return res

    return inner

# 开根号
def func(x):
    return sqrt(x)


abs_in = get_abs(func)
int_in = get_int(get_abs(func))

print(int_in(-5))
